package algorithm.poj.p1000;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLDecoder;

/**
 * 参考了后面的讨论：
 * 1. 时间为负数的不用管，直接去掉，因为如果你可以追得上他（A），那么说明你的速度比他快，那么你不会去跟他（A）走的，如果追不上，那更加不用说
 * 2. 找一个达到时间最少的，输出这个答案就行了，因为用时最少那么他一定会追上你，你一定会最后跟着他走，他到达的时间也就是你达到的最少时间了（这里的t=s/v+t0）
 * 
 * @author Administrator
 *
 */
public class P1922 {

	public static void main(String[] args)
	throws Exception {

		InputStream input = null;
		if (false) {
			input = System.in;
		} else {
			URL url = P1922.class.getResource("P1922.txt");
			File file = new File(URLDecoder.decode(url.getPath(), "UTF-8"));
			input = new FileInputStream(file);
		}
		
		BufferedReader stdin = new BufferedReader(new InputStreamReader(input));

        String line;
        String[] ps;
        String s = "";

        line = stdin.readLine().trim();
        while (!"0".equals(line)) {
        	int n = Integer.valueOf(line);
        	Rider[] riders = new Rider[n];
        	for (int i = 0; i < n; i ++) {
                line = stdin.readLine().trim();
                ps = line.split("\\s+");
                riders[i] = new Rider(Integer.valueOf(ps[0]), Integer.valueOf(ps[1]));
        	}
            s += ride(riders) + "\n";
            line = stdin.readLine().trim();
        }
		
		System.out.println(s);
	}
	
	private static class Rider {
		double v;
		double t;
		
		public Rider(double v, double t) {
			this.v = v;
			this.t = t;
		}
	}

	private static int ride(Rider[] riders) {

		double t = 999999999.0f;
		for (int i = 0; i < riders.length; i ++) {
			if (riders[i].t >= 0) {
				double tmp = 4.5*3600/riders[i].v + riders[i].t;
				if (tmp < t) {
					t = tmp;
				}
			}
		}
		return (int)Math.ceil(t);
	}
}
